// URL参数添加函数
export function urlAddParams(url, params) {
  // 如果URL无效或参数为空，直接返回原URL
  if (!url || !params || typeof params !== 'object') {
    return url;
  }

  // 创建URL对象以便更容易地处理URL各部分
  try {
    const urlObj = new URL(url);

    // 遍历参数对象并添加到URL的searchParams中
    Object.entries(params).forEach(([key, value]) => {
      if (Array.isArray(value)) {
        // 如果是数组，添加多个同名参数
        value.forEach(item => {
          urlObj.searchParams.append(key, item);
        });
      } else if (value !== null && value !== undefined) {
        // 添加单个参数
        urlObj.searchParams.set(key, value);
      }
    });

    return urlObj.toString();
  } catch (e) {
    // 如果URL不合法，尝试简单处理
    const hasQuery = url.includes('?');
    const hasHash = url.includes('#');

    let baseUrl = url;
    let hash = '';

    // 分离哈希部分
    if (hasHash) {
      const hashIndex = url.indexOf('#');
      baseUrl = url.substring(0, hashIndex);
      hash = url.substring(hashIndex);
    }

    // 构建查询字符串
    const queryParams = [];
    Object.entries(params).forEach(([key, value]) => {
      if (Array.isArray(value)) {
        value.forEach(item => {
          queryParams.push(`${encodeURIComponent(key)}=${encodeURIComponent(item)}`);
        });
      } else if (value !== null && value !== undefined) {
        queryParams.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);
      }
    });

    const queryString = queryParams.join('&');

    // 组合URL
    if (hasQuery) {
      return `${baseUrl}${baseUrl.endsWith('&') ? '' : '&'}${queryString}${hash}`;
    } else {
      return `${baseUrl}?${queryString}${hash}`;
    }
  }
}
